#! /usr/bin/python2.4

# Copyright 2007 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""check_svn_revprops.py unittest"""


import unittest

import gvn.hooks.info

import testing.hooks.common

# import RunHook to pass the function pointer to testcommon in unittests
from gvn.hooks.pre_revprop_change.check_svn_revprops import RunHook

class TestSvnRevPropsChange(testing.hooks.common.HookTestCase):

  def setUp(self):
    testing.hooks.common.HookTestCase.setUp(self)

    # create group pickle to use as our group file
    user_groups= {
      "user1": [ "group1" ],
      "adminuser": [ testing.hooks.common.SUPER_GROUP ],
    }

    for user in user_groups:
      self.userdb.WriteUserGroups(user, user_groups[user])

  def testPropSet(self):
    """A random user can set a random property
    """
    self.assertHookResult(self._ChangeRevProps(RunHook, "user1", "randomprop", 
                          "A"), 0)

  def testAdminUserPropSet(self):
    """An admin user can set a random property
    """
    self.assertHookResult(self._ChangeRevProps(RunHook, "adminuser", "randomprop", 
                          "A"), 0)

  def testSvnPropSet(self):
    """A random user cannot set an svn:x property
    """
    self.assertHookResult(self._ChangeRevProps(RunHook, "user1", "svn:foo", "A"),
                "user1 is not allowed to add property svn:foo for rev 1")

  def testAdminUserSvnPropSet(self):
    """An admin user cannot set an svn:x property
    """
    self.assertHookResult(self._ChangeRevProps(RunHook, "adminuser", "svn:foo", 
	    	"A"),
                "adminuser is not allowed to add property svn:foo for rev 1")


if __name__ == "__main__":
  unittest.main()
